/**
 * Author@ Cheng Feitian
 * Date: 20203-22
 * Description: 函数重载的注意事项
 * 1.引用作为重载的条件
 * 2.函数重载碰到默认参数
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

//1.引用作为重载的条件
void func(int &a){
    cout << "func(int &a)的调用" << endl;
}

void func(const int &a){    //const int &a = 10;这时编译器会做优化，即int temp = 10;const int &a = temp; 
    cout << "func(const int &a)的调用" << endl;
}

//2.函数参数碰到默认参数
void func2(int a,int b = 10){
    cout << "func2(int a,int b)的调用" << endl;
}

void func2(int a){
    cout << "func2(int a)的调用" << endl;
}

int main() {

    int a = 10;
    func(a);

    func(10);   //这种情况下，相当于 int &a = 10; 不合法，因为引用后边必须是合法的内存空间，10是放在常量区的

    // func2(1);   //当韩叔叔重组在碰到默认参数时，出现二义性，报错！
    return 0;
}
